1 /*
2 * Scope: a generic MVC framework.
3 * Copyright (c) 2000-2002, The Scope team
4 * All rights reserved.
5 *
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 *
14 * Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
17 *
18 * Neither the name "Scope" nor the names of its contributors
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
21 *
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
27 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
28 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 *
35 *
36 * $Id: ActionManager.java,v 1.8 2002/09/06 16:11:45 ludovicc Exp $
37 */
38 package org.scopemvc.core;
39
40 /***
41 * <P>
42 *
43 * ActionManager is a {@link ModelManager} that handles the actions (invokable
44 * methods) of model objects. The core of Scope doesn't depend on this manager
45 * although this abstract class is in the core package for consistency with the
46 * PropertyManager. An implementation for JavaBean model objects is provided in
47 * {@link org.scopemvc.model.beans.BeansActionManager BeansActionManager}. </P>
48 *
49 * @author <A HREF="mailto:smeyfroi@users.sourceforge.net">Steve Meyfroidt</A>
50 * @created 05 August 2002
51 * @version $Revision: 1.8 $ $Date: 2002/09/06 16:11:45 $
52 */
53 public abstract class ActionManager extends ModelManager {
54
55 private final static String NAME = "ActionManager";
56
57
58 /***
59 * Create an ActionManager for the model class
60 *
61 * @param inModelClass The class of the model
62 * @return The ActionManager instance
63 */
64 public static ActionManager getInstance(Class inModelClass) {
65 return (ActionManager) make(NAME, inModelClass);
66 }
67
68
69 /***
70 * Create an ActionManager for the model
71 *
72 * @param inModel The model
73 * @return The ActionManager instance
74 */
75 public static ActionManager getInstance(Object inModel) {
76 if (inModel == null) {
77 throw new IllegalArgumentException("Can't create an ActionManager for null");
78 }
79 return getInstance(inModel.getClass());
80 }
81
82
83 /***
84 * Generic interface to perform arbitrary actions on a model object.
85 *
86 * @param inModel the model object to perform the action.
87 * @param inAction the {@link ModelAction} to do.
88 * @param inParameters parameters for action.
89 * @return the return from the method (wrapped in an object if primitive
90 * type), or null if the method returns void.
91 * @throws Exception If the action could not be executed successully
92 */
93 public abstract Object doAction(Object inModel, ModelAction inAction, Object[] inParameters) throws Exception;
94
95
96 /***
97 * Can this model do the passed {@link ModelAction}?
98 *
99 * @param inModel The model that may contain the method for executing the
100 * action
101 * @param inAction The action
102 * @return True if the model contains the method for executing the action
103 */
104 public abstract boolean canDoAction(Object inModel, ModelAction inAction);
105 }
This page was automatically generated by Maven